home *** CD-ROM | disk | FTP | other *** search
- REM >!MathChars.MakeCode
- filename$="!MathChars.code"
- codelength%=&1000
- codestart%=&8000
- :
- DIM code% codelength%
- :
- FOR pass%=12 TO 15 STEP 3
- PROCasm(pass%)
- NEXT
- :
- OSCLI("Save "+filename$+" "+STR$~code%+" "+STR$~O%)
- OSCLI("SetType "+filename$+" Data")
- END
- :
- DEFPROCasm(pass%)
- P%=codestart%
- O%=code%
- L%=code%+codelength%
- [OPT pass%
- STMFD r13!,{r14}
- SWI "Wimp_BaseOfSprites" \ Find start of RMA ram sparea (r1)
- MOV r0,#256+8 \ Sparea description.
- SWI &2e \ OS_SpriteOp
- MOV r4,r3 \ We will use r4 as a loop counter
- ADD r4,r4,#1 \ Increment, to counter dec. later
- ADR r2,datablock \ Useable area
- MOV r10,#0
- .loop_thru_sprites
- SUB r4,r4,#1 \ Decrement loop counter
- MOV r0,#13
- ADD r0,r0,#256 \ Get sprite name
- STR r10,datablock
- STR r10,datablock+4
- STR r10,datablock+8 \ Clear useable area
- MOV r3,#12 \ Size of useable area
- SWI &2e
- LDR r8,[r2] \ r8=first 4 bytes of sprite name
- LDR r9,comparison_data \ r9=first 4 bytes of expected name
- CMP r8,r9 \ Is sprite ours?
- MOVEQ r0,#25
- ADDEQ r0,r0,#256 \ Delete sprite
- SWIEQ &2e \ But only if sprite was ours
- CMP r4,#1 \ Check for loop limits
- BGT loop_thru_sprites \ If not, go back
- LDMFD r13!,{pc} \ Otherwise, return to caller
- .datablock EQUD 0
- EQUD 0
- EQUD 0
- .comparison_data EQUS "!cha"
- ]
- ENDPROC
-